#pragma once
#include "FileBase.h"
#include <vector>

#define ARCHIVE_LINKER_MEMBER_1ST 0
#define ARCHIVE_LINKER_MEMBER_2ND 1
#define ARCHIVE_LONGNAMES_MEMBER  2
#define ARCHIVE_HYBRIDMAP_MEMBER  3

#define OBJ_SHOW_NAME 0x01
#define OBJ_SHOW_RAW  0x02
#define OBJ_SHOW_INFO 0x04
#define OBJ_SHOW_ALL  0xff

class CArchiveFile : public CFileBase
{
public:
	CArchiveFile();

	BOOL Init(PBYTE  pBase, DWORD dwSize);

	BOOL UnInit();

	void PrintFileInfo(const char* szPrefix = "");

	void PrintSymbolsInfo();

	void PrintAllObjInfo(DWORD dwFlags = OBJ_SHOW_NAME);

	void UnzipObj();
private:
	PIMAGE_ARCHIVE_MEMBER_HEADER pArchiveCommHeaders_[4];
	std::vector<PIMAGE_ARCHIVE_MEMBER_HEADER> vctArchiveObjHeaders_;
};

